package name.huliqing.qfaces.temp;
//package name.huliqing.qfaces.component;
//
//import java.io.IOException;
//import javax.faces.context.FacesContext;
//import javax.faces.context.ResponseWriter;
//import name.huliqing.qfaces.Constant;
//import name.huliqing.qfaces.QFaces;
//
///**
// * @deprecated 以后将使用QFrame代替
// * @author huliqing
// *
// */
//public abstract class Frame extends Base{
//	// ---- 参数
//	protected Boolean renderFrameBorder;	// 是否渲染Frame边框
//	protected Boolean renderFrameHeader;
//	protected Boolean renderFrameBody;
//	protected Boolean renderFrameFooter;
//	protected Boolean frameDragEnabled;	// 是否允许拖动
//	
//	protected String frameTitle;	// Frame的标题
//	protected String frameFooter;	// 
//	protected String frameHeaderStyle;
//	protected String frameHeaderStyleClass;
//	protected String frameBodyStyle;
//	protected String frameBodyStyleClass;
//	protected String frameFooterStyle;
//	protected String frameFooterStyleClass;
//	
//	// ---- 内部参数
//	protected String closeSrc = "name/huliqing/qfaces/images/frame_close.jpg";
//	private String ID_FRAME_HEADER;	// Header的ID
//	
//	@Override
//    public void encodeBegin(FacesContext fc) throws IOException {
//		init(fc);		// 载入Frame参数
//		initDefault(fc);	// 载入默认参数，因为init可能被覆盖，所以必须预防null值 
//		QFaces.getResLoader().loadJavascript("name/huliqing/qfaces/resource/Frame.js", this);
//		ResponseWriter rw = fc.getResponseWriter();
//		
//		rw.startElement("span", this);
//		rw.writeAttribute("style", "border:0px solid gray;position:absolute;", null);
//		encodeBeforeFrame(fc);
//		if (renderFrameBorder) {
//			encodeWidthFrameBorder(fc);
//		} else {
//			encodeWidthNoFrameBorder(fc);
//		}
//		rw.endElement("span");
//		
//	}
//	
//	// ---- My encode
//	
//	protected void init(FacesContext fc) throws IOException {
//		renderFrameBorder = this.convertToBoolean(this.getAttributes().get("renderFrameBorder"));
//		renderFrameHeader = this.convertToBoolean(this.getAttributes().get("renderFrameHeader"));
//		renderFrameBody = this.convertToBoolean(this.getAttributes().get("renderFrameBody"));
//		renderFrameFooter = this.convertToBoolean(this.getAttributes().get("renderFrameFooter"));
//		frameDragEnabled = this.convertToBoolean(this.getAttributes().get("frameDragEnabled"));
//		frameTitle = (String) this.getAttributes().get("frameTitle");
//		frameFooter = (String) this.getAttributes().get("frameFooter");
//		frameHeaderStyle = (String) this.getAttributes().get("frameHeaderStyle");
//		frameHeaderStyleClass = (String) this.getAttributes().get("frameHeaderStyleClass");
//		frameBodyStyle = (String) this.getAttributes().get("frameBodyStyle");
//		frameBodyStyleClass = (String) this.getAttributes().get("frameBodyStyleClass");
//		frameFooterStyle = (String) this.getAttributes().get("frameFooterStyle");
//		frameFooterStyleClass = (String) this.getAttributes().get("frameFooterStyleClass");
//	}
//	
//	private void initDefault(FacesContext fc) {
//		if (renderFrameBorder == null) renderFrameBorder = true;
//		if (renderFrameHeader == null) renderFrameHeader = true;
//		if (renderFrameBody == null) renderFrameBody = true;
//		if (renderFrameFooter == null)  renderFrameFooter = true;
//		if (frameDragEnabled == null) frameDragEnabled = true;
//		if (frameTitle == null) frameTitle = getClass().getSimpleName();
//		if (frameFooter == null) frameFooter = "QFaces UI";
//		if (frameHeaderStyle == null) frameHeaderStyle = "";
//		if (frameDragEnabled) frameHeaderStyle += ";cursor:move";
//		if (frameHeaderStyleClass == null) frameHeaderStyleClass = "qfaces_frameHeader";
//		if (frameBodyStyle == null) frameBodyStyle = "";
//		if (frameBodyStyleClass == null) frameBodyStyleClass = "qfaces_frameBody";
//		if (frameFooterStyle == null) frameFooterStyle = "";
//		if (frameFooterStyleClass == null) frameFooterStyleClass = "qfaces_frameFooter";
//		this.ID_FRAME_HEADER = this.getClientId(fc) + ":frameHeader";
//	}
//	
//	protected void encodeBeforeFrame(FacesContext fc) throws IOException {}
//	
//	protected void encodeFrameHeader(FacesContext fc) throws IOException {
//		// 关闭Frame的JS响应
//		String jsCloseAction = "QFaces.Faces.UIFrame.close(\"" + getClientId(fc) + "\")";
//		ResponseWriter rw = fc.getResponseWriter();
//		rw.startElement("table", this);
//		rw.writeAttribute("id", ID_FRAME_HEADER, null);
//		rw.writeAttribute("border", "0", null);
//		rw.writeAttribute("class", this.frameHeaderStyleClass, null);
//		rw.writeAttribute("style", this.frameHeaderStyle, null);
//			rw.startElement("tr", this);
//				rw.startElement("td", this);
//				rw.writeText(this.frameTitle, null);
//				rw.endElement("td");
//				
//				rw.startElement("td", this);
//				rw.writeAttribute("width", "50", null);
//				rw.startElement("img", this);
//				rw.writeAttribute("src", QFaces.getResLoader().makeImageSrc(this.closeSrc), null);
//				rw.writeAttribute("onclick", jsCloseAction, null);
//				rw.writeAttribute("style", "border:0;float:right;cursor:pointer;vertical-align:middle;", null);
//				rw.writeAttribute("title", "Close", null);
//				rw.endElement("img");
//				rw.endElement("td");
//			rw.endElement("tr");
//		rw.endElement("table");
//		// 允许拖动
//		if (this.frameDragEnabled) {
//			String jsDrag = "QFaces.Utils.toEnableDrag(\"" + this.ID_FRAME_HEADER + "\", \"" +this.getClientId(fc)+"\")";
//			rw.startElement("script", this);
//			rw.writeAttribute("type", "text/javascript", null);
//			rw.writeText(jsDrag, null);
//			rw.endElement("script");
//		}
//	}
//	
//	protected abstract void encodeFrameBody(FacesContext fc) throws IOException;
//	
//	protected void encodeFrameFooter(FacesContext fc) throws IOException {
//		ResponseWriter rw = fc.getResponseWriter();
//		rw.startElement("div", this);
//		rw.writeAttribute("class", frameFooterStyleClass, null);
//		rw.writeAttribute("style", frameFooterStyle, null);
//		rw.writeText(this.frameFooter, null);
//		rw.endElement("div");
//	}
//	
//	private void encodeWidthFrameBorder(FacesContext fc) throws IOException {
//		String src_tc = QFaces.getResLoader().makeImageSrc(Constant.QFACES_BOX_FRAME_TC);
//		String src_l = QFaces.getResLoader().makeImageSrc(Constant.QFACES_BOX_FRAME_L);
//		String src_r = QFaces.getResLoader().makeImageSrc(Constant.QFACES_BOX_FRAME_R);
//		String src_bc = QFaces.getResLoader().makeImageSrc(Constant.QFACES_BOX_FRAME_BC);
//		// 在某些瀏覽器下可能會在邊框的間隔部分出現空白，以下style解決這個問題
//		String styleFixSpaceBug = "margin:0;padding:0;font-size:0;border:0;";
//		
//		ResponseWriter rw = fc.getResponseWriter();
//		rw.startElement("table", this);
//		rw.writeAttribute("id", this.getClientId(fc), null);
//		rw.writeAttribute("border", "0", null);
//		rw.writeAttribute("cellspacing", "0", null);
//		rw.writeAttribute("cellpadding", "0", null);
//		rw.startElement("tr", this);
//			rw.startElement("td", this);
//			rw.writeAttribute("style", styleFixSpaceBug, null);
//			QFaces.getResLoader().loadImage(Constant.QFACES_BOX_FRAME_TL);
//			rw.endElement("td");
//			
//			rw.startElement("td", this);
//			rw.writeAttribute("style", styleFixSpaceBug + "background:url(" + src_tc + ") repeat-x", null);
//			rw.endElement("td");
//			
//			rw.startElement("td", this);
//			rw.writeAttribute("style", styleFixSpaceBug, null);
//			QFaces.getResLoader().loadImage(Constant.QFACES_BOX_FRAME_TR);
//			rw.endElement("td");
//		rw.endElement("tr");
//		rw.startElement("tr", this);
//			rw.startElement("td", this);
//			rw.writeAttribute("style", styleFixSpaceBug + "background:url(" + src_l + ") repeat-y", null);
//			rw.endElement("td");
//			
//			rw.startElement("td", this);
//			if (renderFrameHeader) encodeFrameHeader(fc);
//			if (renderFrameBody) {
//				rw.startElement("div", this);
//				rw.writeAttribute("class", frameBodyStyleClass, null);
//				rw.writeAttribute("style", frameBodyStyle, null);
//				encodeFrameBody(fc);
//				rw.endElement("div");
//			}
//			if (renderFrameFooter) encodeFrameFooter(fc);
//			rw.endElement("td");
//			
//			rw.startElement("td", this);
//			rw.writeAttribute("style", styleFixSpaceBug + "background:url(" + src_r + ") repeat-y", null);
//			rw.endElement("td");
//		rw.endElement("tr");
//		rw.startElement("tr", this);
//			rw.startElement("td", this);
//			rw.writeAttribute("style", styleFixSpaceBug, null);
//			QFaces.getResLoader().loadImage(Constant.QFACES_BOX_FRAME_BL);
//			rw.endElement("td");
//			
//			rw.startElement("td", this);
//			rw.writeAttribute("style", styleFixSpaceBug + "background:url(" + src_bc + ") repeat-x", null);
//			rw.endElement("td");
//			
//			rw.startElement("td", this);
//			rw.writeAttribute("style", styleFixSpaceBug, null);
//			QFaces.getResLoader().loadImage(Constant.QFACES_BOX_FRAME_BR);
//			rw.endElement("td");
//		rw.endElement("tr");
//		rw.endElement("table");
//	}
//	
//	private void encodeWidthNoFrameBorder(FacesContext fc) throws IOException {
//		ResponseWriter rw = fc.getResponseWriter();
//		rw.startElement("table", this);
//		rw.writeAttribute("id", this.getClientId(fc), null);
//		rw.writeAttribute("border", "0", null);
//		rw.writeAttribute("cellspacing", "0", null);
//		rw.writeAttribute("cellpadding", "0", null);
//		rw.startElement("tr", this);
//			rw.startElement("td", this);
//			if (renderFrameHeader) encodeFrameHeader(fc);
//			if (renderFrameBody) {
//				rw.startElement("div", this);
//				rw.writeAttribute("class", frameBodyStyleClass, null);
//				rw.writeAttribute("style", frameBodyStyle, null);
//				encodeFrameBody(fc);
//				rw.endElement("div");
//			}
//			if (renderFrameFooter) encodeFrameFooter(fc);
//			rw.endElement("td");
//		rw.endElement("tr");
//		rw.endElement("table");
//	}
//	
//}
